<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Automatic bug fixing</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Automatic_bug_fixing"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Automatic_bug_fixing rootpage-Automatic_bug_fixing skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Automatic bug fixing</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p><b>Automatic bug-fixing</b> is the automatic <a href="Patch_(computing)" title="Patch (computing)">repair</a> of <a href="Software_bug" title="Software bug">software bugs</a> without the intervention of a human programmer.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Gazzola2019_3-0" class="reference"><a href="#cite_note-Gazzola2019-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> It is also commonly referred to as <i>automatic patch generation</i>, <i>automatic bug repair</i>, or <i>automatic program repair</i>.<sup id="cite_ref-Gazzola2019_3-1" class="reference"><a href="#cite_note-Gazzola2019-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> The typical goal of such techniques is to automatically generate correct <a href="Patch_(computing)" title="Patch (computing)">patches</a> to eliminate bugs in <a href="Software_program" class="mw-redirect" title="Software program">software programs</a> without causing <a href="Software_regression" title="Software regression">software regression</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Specification">Specification</h2></div>
<p>Automatic bug fixing is made according to a specification of the expected behavior which can be for instance a <a href="Formal_specification" title="Formal specification">formal specification</a> or a <a href="Test_suite" title="Test suite">test suite</a>.<sup id="cite_ref-genprog2009_5-0" class="reference"><a href="#cite_note-genprog2009-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p><p>A test-suite – the input/output pairs specify the functionality of the program, possibly captured in <a href="Assertion_(software_development)" title="Assertion (software development)">assertions</a> can be used as a <a href="Test_oracle" title="Test oracle">test oracle</a> to drive the search. This oracle can in fact be divided between the <i>bug oracle</i> that exposes the faulty behavior, and the <i>regression oracle</i>, which encapsulates the functionality any program repair method must preserve. Note that a test suite is typically incomplete and does not cover all possible cases. Therefore, it is often possible for a validated patch to produce expected outputs for all inputs in the test suite but incorrect outputs for other inputs.<sup id="cite_ref-kali_6-0" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> The existence of such validated but incorrect patches is a major challenge for generate-and-validate techniques.<sup id="cite_ref-kali_6-1" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Recent successful automatic bug-fixing techniques often rely on additional information other than the test suite, such as information learned from previous human patches, to further identify correct patches among validated patches.<sup id="cite_ref-prophet_7-0" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>Another way to specify the expected behavior is to use <a href="Formal_specification" title="Formal specification">formal specifications</a><sup id="cite_ref-autofixe_8-0" class="reference"><a href="#cite_note-autofixe-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> Verification against full specifications that specify the whole program behavior including functionalities is less common because such specifications are typically not available in practice and the computation cost of such <a href="Formal_verification" title="Formal verification">verification</a> is prohibitive. For specific classes of errors, however, implicit partial specifications are often available. For example, there are targeted bug-fixing techniques validating that the patched program can no longer trigger overflow errors in the same execution path.<sup id="cite_ref-codephage_10-0" class="reference"><a href="#cite_note-codephage-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Techniques">Techniques</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Generate-and-validate">Generate-and-validate</h3></div>
<p>Generate-and-validate approaches compile and test each candidate patch to collect all validated patches that produce expected outputs for all inputs in the test suite.<sup id="cite_ref-genprog2009_5-1" class="reference"><a href="#cite_note-genprog2009-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-kali_6-2" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Such a technique typically starts with a test suite of the program, i.e., a set of <a href="Test_cases" class="mw-redirect" title="Test cases">test cases</a>, at least one of which exposes the bug.<sup id="cite_ref-genprog2009_5-2" class="reference"><a href="#cite_note-genprog2009-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-prophet_7-1" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-rsrepair_11-0" class="reference"><a href="#cite_note-rsrepair-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-spr_12-0" class="reference"><a href="#cite_note-spr-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> An early generate-and-validate bug-fixing systems is GenProg.<sup id="cite_ref-genprog2009_5-3" class="reference"><a href="#cite_note-genprog2009-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> The effectiveness of generate-and-validate techniques remains controversial, because they typically do not provide <a href="#Limitations_of_automatic_bug-fixing">patch correctness guarantees</a>.<sup id="cite_ref-kali_6-3" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Nevertheless, the reported results of recent state-of-the-art techniques are generally promising. For example, on systematically collected 69 real world bugs in eight large <a href="C_(programming_language)" title="C (programming language)">C software programs</a>, the state-of-the-art bug-fixing system Prophet generates correct patches for 18 out of the 69 bugs.<sup id="cite_ref-prophet_7-2" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>One way to generate candidate patches is to apply <a href="Program_mutation" class="mw-redirect" title="Program mutation">mutation operators</a> on the original program. Mutation operators manipulate the original program, potentially via its <a href="Abstract_syntax_tree" title="Abstract syntax tree">abstract syntax tree</a> representation, or a more coarse-grained representation such as operating at the <a href="Statement_(programming)" class="mw-redirect" title="Statement (programming)">statement</a>-level or <a href="Block_(programming)" title="Block (programming)">block</a>-level. Earlier <a href="Genetic_improvement_(computer_science)" title="Genetic improvement (computer science)">genetic improvement</a> approaches operate at the statement level and carry out simple delete/replace operations such as deleting an existing statement or replacing an existing statement with another statement in the same source file.<sup id="cite_ref-genprog2009_5-4" class="reference"><a href="#cite_note-genprog2009-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-genprog2012_13-0" class="reference"><a href="#cite_note-genprog2012-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Recent approaches use more fine-grained operators at the <a href="Abstract_syntax_tree" title="Abstract syntax tree">abstract syntax tree</a> level to generate more diverse set of candidate patches.<sup id="cite_ref-spr_12-1" class="reference"><a href="#cite_note-spr-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> Notably, the statement deletion mutation operator, and more generally removing code, is a reasonable repair strategy, or at least a good fault localization strategy.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p><p>Another way to generate candidate patches consists of using fix templates. Fix templates are typically predefined changes for fixing specific classes of bugs.<sup id="cite_ref-par_15-0" class="reference"><a href="#cite_note-par-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> Examples of fix templates include inserting a <a href="Conditional_(computer_programming)" title="Conditional (computer programming)">conditional statement</a> to check whether the value of a variable is null to fix null pointer exception, or changing an integer constant by one to fix off-by-one errors.<sup id="cite_ref-par_15-1" class="reference"><a href="#cite_note-par-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Synthesis-based">Synthesis-based</h3></div>
<p>Repair techniques exist that are based on symbolic execution. For example, Semfix<sup id="cite_ref-semfix_16-0" class="reference"><a href="#cite_note-semfix-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> uses symbolic execution to extract a repair constraint. Angelix<sup id="cite_ref-angelix_17-0" class="reference"><a href="#cite_note-angelix-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> introduced the concept of angelic forest in order to deal with multiline patches.
</p><p>Under certain assumptions, it is possible to state the repair problem as a synthesis problem.
SemFix<sup id="cite_ref-semfix_16-1" class="reference"><a href="#cite_note-semfix-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> uses component-based synthesis.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
Dynamoth uses dynamic synthesis.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>
S3<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> is based on <a href="Syntax-guided_synthesis" class="mw-redirect" title="Syntax-guided synthesis">syntax-guided synthesis</a>.<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>
SearchRepair<sup id="cite_ref-searchrepair_22-0" class="reference"><a href="#cite_note-searchrepair-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> converts potential patches into an SMT formula and queries candidate patches that allow the patched program to pass all supplied test cases.
</p>
<div class="mw-heading mw-heading3"><h3 id="Data-driven">Data-driven</h3></div>
<p><a href="Machine_learning" title="Machine learning">Machine learning</a> techniques can improve the effectiveness of automatic bug-fixing systems.<sup id="cite_ref-prophet_7-3" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> One example of such techniques learns from past successful patches from human developers collected from <a href="Open-source_software" title="Open-source software">open source</a> <a href="Software_repository" title="Software repository">repositories</a> in <a href="GitHub" title="GitHub">GitHub</a> and <a href="SourceForge" title="SourceForge">SourceForge</a>.<sup id="cite_ref-prophet_7-4" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> It then use the learned information to recognize and prioritize potentially correct patches among all generated candidate patches.<sup id="cite_ref-prophet_7-5" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> Alternatively, patches can be directly mined from existing sources. Example approaches include mining patches from donor applications<sup id="cite_ref-codephage_10-1" class="reference"><a href="#cite_note-codephage-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> or from QA web sites.<sup id="cite_ref-QAFix_23-0" class="reference"><a href="#cite_note-QAFix-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>
</p><p>Getafix<sup id="cite_ref-:0_24-0" class="reference"><a href="#cite_note-:0-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup> is a language-agnostic approach developed and used in production at <a href="Facebook%2C_Inc." class="mw-redirect" title="Facebook, Inc.">Facebook</a>. Given a sample of <a href="Commit_(version_control)" title="Commit (version control)">code commits</a> where engineers fixed a certain kind of bug, it learns human-like fix patterns that apply to future bugs of the same kind. Besides using Facebook's own <a href="Repository_(version_control)" title="Repository (version control)">code repositories</a> as training data, Getafix learnt some fixes from <a href="Open_source" title="Open source">open source</a> Java repositories. When new bugs get detected, Getafix applies its previously learnt patterns to produce candidate fixes and ranks them within seconds. It presents only the top-ranked fix for final validation by tools or an engineer, in order to save resources and ideally be so fast that no human time was spent on fixing the same bug, yet.
</p>
<div class="mw-heading mw-heading3"><h3 id="Template-based_repair">Template-based repair</h3></div>
<p>For specific classes of errors, targeted automatic bug-fixing techniques use specialized templates:
</p>
<ul><li><a href="Null_pointer_exception" class="mw-redirect" title="Null pointer exception">null pointer exception</a> repair<sup id="cite_ref-rcv_25-0" class="reference"><a href="#cite_note-rcv-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-nullfix_26-0" class="reference"><a href="#cite_note-nullfix-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-par_15-2" class="reference"><a href="#cite_note-par-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> with insertion of a <a href="Conditional_(computer_programming)" title="Conditional (computer programming)">conditional statement</a> to check whether the value of a variable is null.</li>
<li><a href="Integer_overflow" title="Integer overflow">integer overflow</a> repair<sup id="cite_ref-codephage_10-2" class="reference"><a href="#cite_note-codephage-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Buffer_overflow" title="Buffer overflow">buffer overflow</a> repair<sup id="cite_ref-codephage_10-3" class="reference"><a href="#cite_note-codephage-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Memory_leak" title="Memory leak">memory leak</a> repair,<sup id="cite_ref-leakfix_27-0" class="reference"><a href="#cite_note-leakfix-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> with automated insertion of missing memory deallocation statements.</li></ul>
<p>Comparing to generate-and-validate techniques, template-based techniques tend to have better bug-fixing accuracy but a much narrowed scope.<sup id="cite_ref-kali_6-4" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-leakfix_27-1" class="reference"><a href="#cite_note-leakfix-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Use">Use</h2></div>
<p>There are multiple uses of automatic bug fixing:
</p>
<ul><li>In a development environment: When encountering a bug the developer activates a feature to search for a patch (for instance by clicking on a button). This search can also happen in the background, when the IDE proactively searches for solutions to potential problems, without waiting for explicit action from the developer.<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup></li>
<li>At runtime: When a failure happens at runtime, a binary patch can be searched for and <a href="Self-modifying_code" title="Self-modifying code">applied online</a>. An example of such a repair system is ClearView,<sup id="cite_ref-clearview_29-0" class="reference"><a href="#cite_note-clearview-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup> which does repair on x86 code, with x86 binary patches.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Search_space">Search space</h2></div>
<p>In essence, automatic bug fixing is a search activity, whether deductive-based or heuristic-based. The search space of automatic bug fixing is composed of all edits that can be possibly made to a program. There have been studies to understand the structure of this search space. Qi et al.<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup> showed that the original fitness function of Genprog is not better than random search to drive the search. Long et al.'s<sup id="cite_ref-spaceanalysis_31-0" class="reference"><a href="#cite_note-spaceanalysis-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup> study indicated that correct patches can be considered as sparse in the search space and that incorrect overfitting patches are vastly more abundant (see also discussion about overfitting below).
</p>
<div class="mw-heading mw-heading2"><h2 id="Overfitting">Overfitting</h2></div>
<p>Sometimes, in test-suite based program repair, tools generate patches that pass the test suite, yet are actually incorrect, this is known as the "overfitting" problem.<sup id="cite_ref-overfitting_32-0" class="reference"><a href="#cite_note-overfitting-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup> "Overfitting" in this context refers to the fact that the patch overfits to the test inputs. There are different kinds of overfitting: incomplete fixing means that only some buggy inputs are fixed, regression introduction means some previously working features are broken after the patch (because they were poorly tested). Early prototypes for automatic repair suffered a lot from overfitting: on the Manybugs C benchmark, Qi et al.<sup id="cite_ref-kali_6-5" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> reported that 104/110 of plausible GenProg patches were overfitting. In the context of synthesis-based repair, Le et al.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup> obtained more than 80% of overfitting patches.
</p><p>One way to avoid overfitting is to filter out the generated patches. This can be done based on dynamic analysis.<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup>
Alternatively, Tian et al. propose heuristic approaches to assess patch correctness.<sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Limitations_of_automatic_bug-fixing">Limitations of automatic bug-fixing</h2></div>
<p>Automatic bug-fixing techniques that rely on a test suite do not provide patch correctness guarantees, because the test suite is incomplete and does not cover all cases.<sup id="cite_ref-kali_6-6" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> A weak test suite may cause generate-and-validate techniques to produce validated but incorrect patches that have negative effects such as eliminating desirable functionalities, causing memory leaks, and introducing security vulnerabilities.<sup id="cite_ref-kali_6-7" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> One possible approach is to amplify the failing test suite by automatically generating further test cases that are then labelled as passing or failing. To minimize the human labelling effort, an automatic <a href="Test_oracle" title="Test oracle">test oracle</a> can be trained that gradually learns to automatically classify test cases as passing or failing and only engages the bug-reporting user for uncertain cases.<sup id="cite_ref-learn2fix_37-0" class="reference"><a href="#cite_note-learn2fix-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup>
</p><p>A limitation of generate-and-validate repair systems is the search space explosion.<sup id="cite_ref-spaceanalysis_31-1" class="reference"><a href="#cite_note-spaceanalysis-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup> For a program, there are a large number of statements to change and for each statement there are a large number of possible modifications. State-of-the-art systems address this problem by assuming that a small modification is enough for fixing a bug, resulting in a search space reduction.
</p><p>The limitation of approaches based on symbolic analysis<sup id="cite_ref-semfix_16-2" class="reference"><a href="#cite_note-semfix-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-angelix_17-1" class="reference"><a href="#cite_note-angelix-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> is that real world programs are often converted to intractably large formulas especially for modifying statements with <a href="Side_effect_(computer_science)" title="Side effect (computer science)">side effects</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Benchmarks">Benchmarks</h2></div>
<p>Benchmarks of bugs typically focus on one specific programming language.
In C, the Manybugs benchmark collected by GenProg authors contains 69 real world defects and it is widely used to evaluate many other bug-fixing tools for C.<sup id="cite_ref-genprog2012_13-1" class="reference"><a href="#cite_note-genprog2012-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-prophet_7-6" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-spr_12-2" class="reference"><a href="#cite_note-spr-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-angelix_17-2" class="reference"><a href="#cite_note-angelix-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p><p>In <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, the main benchmark is Defects4J now extensively used in most research papers on program repair for Java.<sup id="cite_ref-capgen_38-0" class="reference"><a href="#cite_note-capgen-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup> Alternative benchmarks exist, such as the Quixbugs benchmark,<sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup> which contains original bugs for program repair. Other benchmarks of Java bugs include Bugs.jar,<sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup> based on past commits.
</p>
<div class="mw-heading mw-heading2"><h2 id="Example_tools">Example tools</h2></div>
<p>Automatic bug-fixing is an active research topic in computer science. There are many implementations of various bug-fixing techniques especially for C and Java programs. Note that most of these implementations are research prototypes for demonstrating their techniques, i.e., it is unclear whether their current implementations are ready for industrial usage or not.
</p>
<div class="mw-heading mw-heading3"><h3 id="C">C</h3></div>
<ul><li>ClearView:<sup id="cite_ref-clearview_29-1" class="reference"><a href="#cite_note-clearview-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup> A generate-and-validate tool of generating binary patches for deployed systems. It is evaluated on 10 security vulnerability cases. A later study shows that it generates correct patches for at least 4 of the 10 cases.<sup id="cite_ref-kali_6-8" class="reference"><a href="#cite_note-kali-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></li>
<li>GenProg:<sup id="cite_ref-genprog2009_5-5" class="reference"><a href="#cite_note-genprog2009-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-genprog2012_13-2" class="reference"><a href="#cite_note-genprog2012-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> A seminal generate-and-validate bug-fixing tool. It has been extensively studied in the context of the ManyBugs benchmark.</li>
<li>SemFix:<sup id="cite_ref-semfix_16-3" class="reference"><a href="#cite_note-semfix-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> The first solver-based bug-fixing tool for C.</li>
<li>CodePhage:<sup id="cite_ref-codephage_10-4" class="reference"><a href="#cite_note-codephage-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> The first bug-fixing tool that directly transfer code across programs to generate patch for C program. Note that although it generates C patches, it can extract code from <a href="Machine_code" title="Machine code">binary programs</a> without source code.<sup id="cite_ref-codephage_10-5" class="reference"><a href="#cite_note-codephage-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li>LeakFix:<sup id="cite_ref-leakfix_27-2" class="reference"><a href="#cite_note-leakfix-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> A tool that automatically fixes memory leaks in C programs.</li>
<li>Prophet:<sup id="cite_ref-prophet_7-7" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> The first generate-and-validate tool that uses machine learning techniques to learn useful knowledge from past human patches to recognize correct patches. It is evaluated on the same benchmark as GenProg and generate correct patches (i.e., equivalent to human patches) for 18 out of 69 cases.<sup id="cite_ref-prophet_7-8" class="reference"><a href="#cite_note-prophet-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></li>
<li>SearchRepair:<sup id="cite_ref-searchrepair_22-1" class="reference"><a href="#cite_note-searchrepair-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> A tool for replacing buggy code using snippets of code from elsewhere. It is evaluated on the IntroClass benchmark<sup id="cite_ref-introclassmanybugs_42-0" class="reference"><a href="#cite_note-introclassmanybugs-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup> and generates much higher quality patches on that benchmark than GenProg, RSRepair, and AE.</li>
<li>Angelix:<sup id="cite_ref-angelix_17-3" class="reference"><a href="#cite_note-angelix-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> An improved solver-based bug-fixing tool. It is evaluated on the GenProg benchmark. For 10 out of the 69 cases, it generate patches that is equivalent to human patches.</li>
<li>Learn2Fix:<sup id="cite_ref-learn2fix_37-1" class="reference"><a href="#cite_note-learn2fix-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup> The first human-in-the-loop semi-automatic repair tool. Extends GenProg to learn the condition under which a semantic bug is observed by systematic queries to the user who is reporting the bug. Only works for programs that take and produce integers.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Java">Java</h3></div>
<ul><li>PAR:<sup id="cite_ref-par_15-3" class="reference"><a href="#cite_note-par-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> A generate-and-validate tool that uses a set of manually defined fix templates.</li>
<li>QACrashFix:<sup id="cite_ref-QAFix_23-1" class="reference"><a href="#cite_note-QAFix-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> A tool that fixes Java crash bugs by mining fixes from Q&A web site.</li>
<li>ARJA:<sup id="cite_ref-arja_43-0" class="reference"><a href="#cite_note-arja-43"><span class="cite-bracket">[</span>43<span class="cite-bracket">]</span></a></sup> A repair tool for Java based on multi-objective genetic programming.</li>
<li>NpeFix:<sup id="cite_ref-npefix_44-0" class="reference"><a href="#cite_note-npefix-44"><span class="cite-bracket">[</span>44<span class="cite-bracket">]</span></a></sup> An automatic repair tool for NullPointerException in Java, available <a rel="nofollow" class="external text" href="https://github.com/Spirals-Team/npefix">on Github</a>.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Other_languages">Other languages</h3></div>
<ul><li>AutoFixE:<sup id="cite_ref-autofixe_8-1" class="reference"><a href="#cite_note-autofixe-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> A bug-fixing tool for <a href="Eiffel_programming_language" class="mw-redirect" title="Eiffel programming language">Eiffel language</a>. It relies the contracts (i.e., a form of formal specification) in Eiffel programs to validate generated patches.</li>
<li>Getafix:<sup id="cite_ref-:0_24-1" class="reference"><a href="#cite_note-:0-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup> Operates purely on <a href="Abstract_syntax_tree" title="Abstract syntax tree">AST</a> transformations and thus requires only a <a href="Parser" class="mw-redirect" title="Parser">parser</a> and formatter. At Facebook it has been applied to <a href="Hack_(programming_language)" title="Hack (programming language)">Hack</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a> and <a href="Objective-C" title="Objective-C">Objective-C</a>.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Proprietary">Proprietary</h3></div>
<ul><li>DeepCode integrates public and private <a href="GitHub" title="GitHub">GitHub</a>, <a href="GitLab" title="GitLab">GitLab</a> and <a href="Bitbucket" title="Bitbucket">Bitbucket</a> <a href="Software_repository" title="Software repository">repositories</a> to identify code-fixes and improve software.<sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span class="cite-bracket">[</span>45<span class="cite-bracket">]</span></a></sup></li></ul>
<ul><li>Kodezi utilizes opensource data from <a href="GitHub" title="GitHub">GitHub</a> <a href="Software_repository" title="Software repository">repositories</a>, <a href="Stack_Overflow" title="Stack Overflow">Stack Overflow</a>, and private trained models to analyze code, provide solutions, and descriptions about the coding bugs instantly.<sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span class="cite-bracket">[</span>46<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFRinard2008" class="citation journal cs1">Rinard, Martin C. (2008). "Technical perspective <i>Patching</i> program errors". <i>Communications of the ACM</i>. <b>51</b> (12): 86. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1409360.1409381">10.1145/1409360.1409381</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:28629846">28629846</a>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFHarman2010" class="citation journal cs1">Harman, Mark (2010). "Automated patching techniques". <i>Communications of the ACM</i>. <b>53</b> (5): 108. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1735223.1735248">10.1145/1735223.1735248</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:9729944">9729944</a>.</cite></span>
</li>
<li id="cite_note-Gazzola2019-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-Gazzola2019_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Gazzola2019_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGazzolaMicucciMariani2019" class="citation journal cs1">Gazzola, Luca; Micucci, Daniela; Mariani, Leonardo (2019). <a rel="nofollow" class="external text" href="https://boa.unimib.it/bitstream/10281/184798/2/08089448_final.pdf">"Automatic Software Repair: A Survey"</a> <span class="cs1-format">(PDF)</span>. <i>IEEE Transactions on Software Engineering</i>. <b>45</b> (1): <span class="nowrap">34–</span>67. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2017.2755013">10.1109/TSE.2017.2755013</a></span>. <a href="Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/10281%2F184798">10281/184798</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:57764123">57764123</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFTanRoychoudhury2015" class="citation book cs1">Tan, Shin Hwei; Roychoudhury, Abhik (2015). "relifix: Automated repair of software regressions". <i>2015 IEEE/ACM 37th IEEE International Conference on Software Engineering</i>. IEEE. pp. <span class="nowrap">471–</span>482. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICSE.2015.65">10.1109/ICSE.2015.65</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4799-1934-5</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:17125466">17125466</a>.</cite></span>
</li>
<li id="cite_note-genprog2009-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-genprog2009_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-genprog2009_5-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-genprog2009_5-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-genprog2009_5-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-genprog2009_5-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-genprog2009_5-5"><sup><i><b>f</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFWeimerNguyenLe_GouesForrest2009" class="citation book cs1">Weimer, Westley; Nguyen, ThanhVu; <a href="Claire_Le_Goues" title="Claire Le Goues">Le Goues, Claire</a>; Forrest, Stephanie (2009). "Automatically finding patches using genetic programming". <i>Proceedings of the 31st International Conference on Software Engineering</i>. IEEE. pp. <span class="nowrap">364–</span>374. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.147.8995">10.1.1.147.8995</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICSE.2009.5070536">10.1109/ICSE.2009.5070536</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4244-3453-4</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1706697">1706697</a>.</cite></span>
</li>
<li id="cite_note-kali-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-kali_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-kali_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-kali_6-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-kali_6-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-kali_6-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-kali_6-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-kali_6-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-kali_6-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-kali_6-8"><sup><i><b>i</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFQiLongAchourRinard2015" class="citation book cs1">Qi, Zichao; Long, Fan; Achour, Sara; Rinard, Martin (2015). "An Analysis of Patch Plausibility and Correctness for Generate-and-Validate Patch Generation Systems". <i>Proceedings of the 2015 International Symposium on Software Testing and Analysis</i>. ACM. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.696.5616">10.1.1.696.5616</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2771783.2771791">10.1145/2771783.2771791</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-3620-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6845282">6845282</a>.</cite></span>
</li>
<li id="cite_note-prophet-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-prophet_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-prophet_7-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-prophet_7-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-prophet_7-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-prophet_7-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-prophet_7-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-prophet_7-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-prophet_7-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-prophet_7-8"><sup><i><b>i</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFLongRinard2016" class="citation book cs1">Long, Fan; Rinard, Martin (2016). "Automatic patch generation by learning correct code". <i>Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages</i>. ACM. pp. <span class="nowrap">298–</span>312. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2837614.2837617">10.1145/2837614.2837617</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-3549-2</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6091588">6091588</a>.</cite></span>
</li>
<li id="cite_note-autofixe-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-autofixe_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-autofixe_8-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFPeiFuriaNordioWei2014" class="citation journal cs1">Pei, Yu; Furia, Carlo A.; Nordio, Martin; Wei, Yi; Meyer, Bertrand; Zeller, Andreas (May 2014). "Automated Fixing of Programs with Contracts". <i>IEEE Transactions on Software Engineering</i>. <b>40</b> (5): <span class="nowrap">427–</span>449. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1403.1117">1403.1117</a></span>. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2014arXiv1403.1117P">2014arXiv1403.1117P</a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2014.2312918">10.1109/TSE.2014.2312918</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:53302638">53302638</a>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation journal cs1">"Contract-based Data Structure Repair Using Alloy". <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.182.4390">10.1.1.182.4390</a></span>.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite journal}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (help)</span></span>
</li>
<li id="cite_note-codephage-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-codephage_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-codephage_10-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-codephage_10-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-codephage_10-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-codephage_10-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-codephage_10-5"><sup><i><b>f</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFSidiroglouLahtinenLongRinard2015" class="citation book cs1">Sidiroglou, Stelios; Lahtinen, Eric; Long, Fan; Rinard, Martin (2015). "Automatic Error Elimination by Multi-Application Code Transfer". <i>Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation</i>.</cite></span>
</li>
<li id="cite_note-rsrepair-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-rsrepair_11-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFQiMaoLeiDai2014" class="citation book cs1">Qi, Yuhua; Mao, Xiaoguang; Lei, Yan; Dai, Ziying; Wang, Chengsong (2014). "The Strength of Random Search on Automated Program Repair". <i>Proceedings of the 36th International Conference on Software Engineering</i>. ICSE 2014. Austin, Texas: ACM. pp. <span class="nowrap">254–</span>265. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2568225.2568254">10.1145/2568225.2568254</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-2756-5</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:14976851">14976851</a>.</cite></span>
</li>
<li id="cite_note-spr-12"><span class="mw-cite-backlink">^ <a href="#cite_ref-spr_12-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-spr_12-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-spr_12-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFLongRinard2015" class="citation book cs1">Long, Fan; Rinard, Martin (2015). "Staged Program Repair with Condition Synthesis". <i>Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</i>. ESEC/FSE 2015. Bergamo, Italy: ACM. pp. <span class="nowrap">166–</span>178. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.696.9059">10.1.1.696.9059</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2786805.2786811">10.1145/2786805.2786811</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-3675-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:5987616">5987616</a>.</cite></span>
</li>
<li id="cite_note-genprog2012-13"><span class="mw-cite-backlink">^ <a href="#cite_ref-genprog2012_13-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-genprog2012_13-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-genprog2012_13-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFLe_GouesDewey-VogtForrestWeimer2012" class="citation book cs1"><a href="Claire_Le_Goues" title="Claire Le Goues">Le Goues, Claire</a>; Dewey-Vogt, Michael; Forrest, Stephanie; Weimer, Westley (2012). "A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each". <i>2012 34th International Conference on Software Engineering (ICSE)</i>. IEEE. pp. <span class="nowrap">3–</span>13. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.661.9690">10.1.1.661.9690</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICSE.2012.6227211">10.1109/ICSE.2012.6227211</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4673-1067-3</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:10987936">10987936</a>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite id="CITEREFQiLongAchourRinard2015" class="citation book cs1">Qi, Zichao; Long, Fan; Achour, Sara; Rinard, Martin (2015-07-13). <a rel="nofollow" class="external text" href="https://dx.doi.org/10.1145/2771783.2771791">"An analysis of patch plausibility and correctness for generate-and-validate patch generation systems"</a>. <i>Proceedings of the 2015 International Symposium on Software Testing and Analysis</i>. New York, NY, USA: ACM. pp. <span class="nowrap">24–</span>36. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2771783.2771791">10.1145/2771783.2771791</a>. <a href="Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/1721.1%2F101586">1721.1/101586</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450336208</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6845282">6845282</a>.</cite></span>
</li>
<li id="cite_note-par-15"><span class="mw-cite-backlink">^ <a href="#cite_ref-par_15-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-par_15-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-par_15-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-par_15-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFKimNamSongKim2013" class="citation book cs1">Kim, Dongsun; Nam, Jaechang; Song, Jaewoo; Kim, Sunghun (2013). "Automatic Patch Generation Learned from Human-written Patches". <i>Proceedings of the 2013 International Conference on Software Engineering</i>. ICSE '13'. IEEE Press. pp. <span class="nowrap">802–</span>811. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4673-3076-3</bdi>.</cite></span>
</li>
<li id="cite_note-semfix-16"><span class="mw-cite-backlink">^ <a href="#cite_ref-semfix_16-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-semfix_16-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-semfix_16-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-semfix_16-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFNguyenQiRoychoudhuryChandra2013" class="citation book cs1">Nguyen, Hoang Duong Thien; Qi, Dawei; Roychoudhury, Abhik; Chandra, Satish (2013). "SemFix: Program Repair via Semantic Analysis". <i>Proceedings of the 2013 International Conference on Software Engineering</i>. ICSE '13'. San Francisco, California: IEEE Press. pp. <span class="nowrap">772–</span>781. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4673-3076-3</bdi>.</cite></span>
</li>
<li id="cite_note-angelix-17"><span class="mw-cite-backlink">^ <a href="#cite_ref-angelix_17-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-angelix_17-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-angelix_17-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-angelix_17-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFMechtaevYiRoychoudhury2016" class="citation book cs1">Mechtaev, Sergey; Yi, Jooyong; Roychoudhury, Abhik (2016). "Angelix: scalable multiline program patch synthesis via symbolic analysis". <i>Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, Texas, May 14-22, 2016</i>. pp. <span class="nowrap">691–</span>701.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite id="CITEREFJhaGulwaniSeshiaTiwari2010" class="citation book cs1">Jha, Susmit; Gulwani, Sumit; Seshia, Sanjit A.; Tiwari, Ashish (2010-05-01). <a rel="nofollow" class="external text" href="http://techreports.lib.berkeley.edu/accessPages/EECS-2010-15.html"><i>Oracle-guided component-based program synthesis</i></a>. ACM. pp. <span class="nowrap">215–</span>224. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1806799.1806833">10.1145/1806799.1806833</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781605587196</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6344783">6344783</a>.</cite></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite id="CITEREFGalensonReamesBodikHartmann2014" class="citation book cs1">Galenson, Joel; Reames, Philip; Bodik, Rastislav; Hartmann, Björn; Sen, Koushik (2014-05-31). <i>CodeHint: dynamic and interactive synthesis of code snippets</i>. ACM. pp. <span class="nowrap">653–</span>663. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2568225.2568250">10.1145/2568225.2568250</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450327565</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:10656182">10656182</a>.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite id="CITEREFLeChuLoLe_Goues2017" class="citation book cs1">Le, Xuan-Bach D.; Chu, Duc-Hiep; Lo, David; <a href="Claire_Le_Goues" title="Claire Le Goues">Le Goues, Claire</a>; Visser, Willem (2017-08-21). <a rel="nofollow" class="external text" href="https://ink.library.smu.edu.sg/sis_research/3917"><i>Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering - ESEC/FSE 2017</i></a>. ACM. pp. <span class="nowrap">593–</span>604. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3106237.3106309">10.1145/3106237.3106309</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450351058</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1503790">1503790</a>.</cite></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><cite id="CITEREFAlurBodikJuniwalMartin2013" class="citation book cs1">Alur, Rajeev; Bodik, Rastislav; Juniwal, Garvit; Martin, Milo M. K.; Raghothaman, Mukund; Seshia, Sanjit A.; Singh, Rishabh; Solar-Lezama, Armando; <a href="Emina_Torlak" title="Emina Torlak">Torlak, Emina</a>; Udupa, Abhishek (2013). "Syntax-guided synthesis". <i>2013 Formal Methods in Computer-Aided Design</i>. pp. <span class="nowrap">1–</span>8. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.377.2829">10.1.1.377.2829</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2Ffmcad.2013.6679385">10.1109/fmcad.2013.6679385</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9780983567837</bdi>.</cite></span>
</li>
<li id="cite_note-searchrepair-22"><span class="mw-cite-backlink">^ <a href="#cite_ref-searchrepair_22-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-searchrepair_22-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFKeStoleeLe_GouesBrun2015" class="citation book cs1">Ke, Yalin; Stolee, Kathryn; <a href="Claire_Le_Goues" title="Claire Le Goues">Le Goues, Claire</a>; Brun, Yuriy (2015). "Repairing Programs with Semantic Code Search". <i>Proceedings of the 2015 30th IEEE/ACM International Conference on Automated Software Engineering</i>. ASE 2015. Lincoln, Nebraska: ACM. pp. <span class="nowrap">295–</span>306. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FASE.2015.60">10.1109/ASE.2015.60</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-5090-0025-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:16361458">16361458</a>.</cite></span>
</li>
<li id="cite_note-QAFix-23"><span class="mw-cite-backlink">^ <a href="#cite_ref-QAFix_23-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-QAFix_23-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGaoZhangWangXiong2015" class="citation book cs1">Gao, Qing; Zhang, Hansheng; Wang, Jie; Xiong, Yingfei; Zhang, Lu; Mei, Hong (2015). "Fixing Recurring Crash Bugs via Analyzing Q&A Sites". <i>2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE)</i>. IEEE. pp. <span class="nowrap">307–</span>318. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FASE.2015.81">10.1109/ASE.2015.81</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-5090-0025-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:2513924">2513924</a>.</cite></span>
</li>
<li id="cite_note-:0-24"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_24-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_24-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFBaderScottPradelChandra2019" class="citation journal cs1">Bader, Johannes; Scott, Andrew; Pradel, Michael; Chandra, Satish (2019-10-10). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3360585">"Getafix: learning to fix bugs automatically"</a>. <i>Proceedings of the ACM on Programming Languages</i>. <b>3</b> (OOPSLA): 159:1–159:27. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1902.06111">1902.06111</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3360585">10.1145/3360585</a></span>.</cite></span>
</li>
<li id="cite_note-rcv-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-rcv_25-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFLongSidiroglou-DouskosRinard2014" class="citation book cs1">Long, Fan; Sidiroglou-Douskos, Stelios; Rinard, Martin (2014). "Automatic Runtime Error Repair and Containment via Recovery Shepherding". <i>Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation</i>. PLDI '14'. New York, New York: ACM. pp. <span class="nowrap">227–</span>238. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2594291.2594337">10.1145/2594291.2594337</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-2784-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6252501">6252501</a>.</cite></span>
</li>
<li id="cite_note-nullfix-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-nullfix_26-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFDobolyiWeimer2008" class="citation book cs1">Dobolyi, Kinga; Weimer, Westley (2008). "Changing Java's Semantics for Handling Null Pointer Exceptions". <i>2008 19th International Symposium on Software Reliability Engineering (ISSRE)</i>. pp. <span class="nowrap">47–</span>56. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.147.6158">10.1.1.147.6158</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FISSRE.2008.59">10.1109/ISSRE.2008.59</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1454939">1454939</a>.</cite></span>
</li>
<li id="cite_note-leakfix-27"><span class="mw-cite-backlink">^ <a href="#cite_ref-leakfix_27-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-leakfix_27-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-leakfix_27-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGaoXiongMiZhang2015" class="citation book cs1">Gao, Qing; Xiong, Yingfei; Mi, Yaqing; Zhang, Lu; Yang, Weikun; Zhou, Zhaoping; Xie, Bing; Mei, Hong (2015). "Safe Memory-leak Fixing for C Programs". <i>Proceedings of the 37th International Conference on Software Engineering – Volume 1</i>. ICSE '15'. Piscataway, New Jersey: IEEE Press. pp. <span class="nowrap">459–</span>470. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4799-1934-5</bdi>.</cite></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><cite id="CITEREFMuşluBrunHolmesErnst2012" class="citation journal cs1">Muşlu, Kıvanç; Brun, Yuriy; Holmes, Reid; Ernst, Michael D.; Notkin, David; Muşlu, Kıvanç; Brun, Yuriy; Holmes, Reid; Ernst, Michael D.; Notkin, David (19 October 2012). "Speculative analysis of integrated development environment recommendations, Speculative analysis of integrated development environment recommendations". <i>ACM SIGPLAN Notices</i>. <b>47</b> (10): 669, <span class="nowrap">669–</span>682, 682. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.259.6341">10.1.1.259.6341</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2384616.2384665">10.1145/2384616.2384665</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0362-1340">0362-1340</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:5795141">5795141</a>.</cite></span>
</li>
<li id="cite_note-clearview-29"><span class="mw-cite-backlink">^ <a href="#cite_ref-clearview_29-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-clearview_29-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFPerkins2009" class="citation book cs1">Perkins, Jeff H.; et al. (2009). "Automatically patching errors in deployed software". <i>Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles</i>. ACM. pp. <span class="nowrap">87–</span>102. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.157.5877">10.1.1.157.5877</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1629575.1629585">10.1145/1629575.1629585</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-60558-752-3</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:7597529">7597529</a>.</cite></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><cite id="CITEREFQiMaoLeiDai2014" class="citation book cs1">Qi, Yuhua; Mao, Xiaoguang; Lei, Yan; Dai, Ziying; Wang, Chengsong (2014-05-31). <i>The strength of random search on automated program repair</i>. ACM. pp. <span class="nowrap">254–</span>265. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2568225.2568254">10.1145/2568225.2568254</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450327565</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:14976851">14976851</a>.</cite></span>
</li>
<li id="cite_note-spaceanalysis-31"><span class="mw-cite-backlink">^ <a href="#cite_ref-spaceanalysis_31-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-spaceanalysis_31-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFLongRinard2016" class="citation book cs1">Long, Fan; Rinard, Martin (2016). "An Analysis of the Search Spaces for Generate and Validate Patch Generation Systems". <i>Proceedings of the 38th International Conference on Software Engineering</i>. ICSE '16. New York, New York: ACM. pp. <span class="nowrap">702–</span>713. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1602.05643">1602.05643</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2884781.2884872">10.1145/2884781.2884872</a>. <a href="Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/1721.1%2F113656">1721.1/113656</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-3900-1</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:7426809">7426809</a>.</cite></span>
</li>
<li id="cite_note-overfitting-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-overfitting_32-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFSmithBarrLe_GouesBrun2015" class="citation book cs1">Smith, Edward K.; Barr, Earl T.; <a href="Claire_Le_Goues" title="Claire Le Goues">Le Goues, Claire</a>; Brun, Yuriy (2015). "Is the Cure Worse Than the Disease? Overfitting in Automated Program Repair". <i>Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</i>. ESEC/FSE 2015. New York, New York: ACM. pp. <span class="nowrap">532–</span>543. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2786805.2786825">10.1145/2786805.2786825</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-3675-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6300790">6300790</a>.</cite></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text"><cite id="CITEREFLeThungLoGoues2018" class="citation journal cs1">Le, Xuan Bach D.; Thung, Ferdian; Lo, David; Goues, Claire Le (2018-03-02). <a rel="nofollow" class="external text" href="https://ink.library.smu.edu.sg/sis_research/3986">"Overfitting in semantics-based automated program repair"</a>. <i>Empirical Software Engineering</i>. <b>23</b> (5): <span class="nowrap">3007–</span>3033. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2Fs10664-017-9577-2">10.1007/s10664-017-9577-2</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1382-3256">1382-3256</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:3635768">3635768</a>.</cite></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><cite id="CITEREFXinReiss2017" class="citation book cs1">Xin, Qi; Reiss, Steven P. (2017-07-10). <a rel="nofollow" class="external text" href="https://dx.doi.org/10.1145/3092703.3092718">"Identifying test-suite-overfitted patches through test case generation"</a>. <i>Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis</i>. New York, NY, USA: ACM. pp. <span class="nowrap">226–</span>236. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3092703.3092718">10.1145/3092703.3092718</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-4503-5076-1</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:20562134">20562134</a>.</cite></span>
</li>
<li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text"><cite id="CITEREFTianLiuKaboréKoyuncu2021" class="citation news cs1">Tian, Haoye; Liu, Kui; Kaboré, Abdoul Kader; Koyuncu, Anil; Li, Li; Klein, Jacques; Bissyandé, Tegawendé F. (27 January 2021). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/3324884.3416532">"Evaluating representation learning of code changes for predicting patch correctness in program repair"</a>. <i>Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering</i>. Association for Computing Machinery. pp. <span class="nowrap">981–</span>992. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3324884.3416532">10.1145/3324884.3416532</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450367684</bdi>.</cite></span>
</li>
<li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><cite id="CITEREFTianTangHabibWang2023" class="citation book cs1">Tian, Haoye; Tang, Xunzhu; Habib, Andrew; Wang, Shangwen; Liu, Kui; Xia, Xin; Klein, Jacques; BissyandÉ, TegawendÉ F. (5 January 2023). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/3551349.3556914">"Is this Change the Answer to that Problem?: Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness"</a>. <i>Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering</i>. Association for Computing Machinery. pp. <span class="nowrap">1–</span>13. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/2208.04125">2208.04125</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3551349.3556914">10.1145/3551349.3556914</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450394758</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:251403079">251403079</a>.</cite></span>
</li>
<li id="cite_note-learn2fix-37"><span class="mw-cite-backlink">^ <a href="#cite_ref-learn2fix_37-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-learn2fix_37-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFBöhmeGeethalPham2020" class="citation book cs1">Böhme, Marcel; Geethal, Charaka; Pham, Van-Thuan (2020). "Human-In-The-Loop Automatic Program Repair". <i>Proceedings of the 13th International Conference on Software Testing, Validation and Verification</i>. ICST 2020. Porto, Portugal: IEEE. pp. <span class="nowrap">274–</span>285. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1912.07758">1912.07758</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICST46399.2020.00036">10.1109/ICST46399.2020.00036</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-7281-5778-8</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:209386817">209386817</a>.</cite></span>
</li>
<li id="cite_note-capgen-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-capgen_38-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFWenChenWuHao2018" class="citation book cs1">Wen, Ming; Chen, Junjie; Wu, Rongxin; Hao, Dan; Cheung, Shing-Chi (2018). <a rel="nofollow" class="external text" href="https://repository.ust.hk/ir/Record/1783.1-92186">"Context-aware patch generation for better automated program repair"</a>. <a rel="nofollow" class="external text" href="https://repository.hkust.edu.hk/ir/Record/1783.1-92186"><i>Proceedings of the 40th International Conference on Software Engineering</i></a>. New York, New York, USA: ACM Press. pp. <span class="nowrap">1–</span>11. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3180155.3180233">10.1145/3180155.3180233</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450356381</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:3374770">3374770</a>.</cite></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><cite id="CITEREFHuaZhangWangKhurshid2018" class="citation book cs1">Hua, Jinru; Zhang, Mengshi; Wang, Kaiyuan; Khurshid, Sarfraz (2018). "Towards practical program repair with on-demand candidate generation". <i>Proceedings of the 40th International Conference on Software Engineering</i>. New York, New York, USA: ACM Press. pp. <span class="nowrap">12–</span>23. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3180155.3180245">10.1145/3180155.3180245</a></span>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450356381</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:49666327">49666327</a>.</cite></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><cite id="CITEREFLinKoppelChenSolar-Lezama2017" class="citation book cs1">Lin, Derrick; Koppel, James; Chen, Angela; Solar-Lezama, Armando (2017). "QuixBugs: A multi-lingual program repair benchmark set based on the quixey challenge". <i>Proceedings Companion of the 2017 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity</i>. New York, New York, USA: ACM Press. pp. <span class="nowrap">55–</span>56. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3135932.3135941">10.1145/3135932.3135941</a></span>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450355148</bdi>.</cite></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><cite id="CITEREFSahaLyuLamYoshida2018" class="citation book cs1">Saha, Ripon K.; Lyu, Yingjun; Lam, Wing; Yoshida, Hiroaki; Prasad, Mukul R. (2018). <a rel="nofollow" class="external text" href="http://dl.acm.org/citation.cfm?doid=3196398.3196473">"Bugs.jar"</a>. <i>Proceedings of the 15th International Conference on Mining Software Repositories</i>. MSR '18. pp. <span class="nowrap">10–</span>13. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3196398.3196473">10.1145/3196398.3196473</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9781450357166</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:50770093">50770093</a>.</cite></span>
</li>
<li id="cite_note-introclassmanybugs-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-introclassmanybugs_42-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFLe_GouesHoltschulteSmithBrun2015" class="citation journal cs1"><a href="Claire_Le_Goues" title="Claire Le Goues">Le Goues, Claire</a>; Holtschulte, Neal; Smith, Edward; Brun, Yuriy; Devanbu, Premkumar; Forrest, Stephanie; Weimer, Westley (2015). <a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2015.2454513">"The Many <i>Bugs</i> and Intro <i>Class</i> Benchmarks for Automated Repair of C Programs"</a>. <i>IEEE Transactions on Software Engineering</i>. <b>41</b> (12): <span class="nowrap">1236–</span>1256. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2015.2454513">10.1109/TSE.2015.2454513</a></span>.</cite></span>
</li>
<li id="cite_note-arja-43"><span class="mw-cite-backlink"><b><a href="#cite_ref-arja_43-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFYuanBanzhaf2020" class="citation journal cs1">Yuan, Yuan; Banzhaf, Wolfgang (2020). <a rel="nofollow" class="external text" href="https://doi.org/10.1109/TSE.2018.2874648">"ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming"</a>. <i>IEEE Transactions on Software Engineering</i>. <b>46</b> (10): <span class="nowrap">1040–</span>1067. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1712.07804">1712.07804</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2018.2874648">10.1109/TSE.2018.2874648</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:25222219">25222219</a>.</cite></span>
</li>
<li id="cite_note-npefix-44"><span class="mw-cite-backlink"><b><a href="#cite_ref-npefix_44-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFDurieux2017" class="citation book cs1">Durieux, Thomas (2017). "Dynamic Patch Generation for Null Pointer Exceptions Using Metaprogramming". <i>2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)</i>. pp. <span class="nowrap">349–</span>358. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/1812.00409">1812.00409</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FSANER.2017.7884635">10.1109/SANER.2017.7884635</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-5090-5501-2</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:2736203">2736203</a>.</cite></span>
</li>
<li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://sifted.eu/articles/ai-is-coming-for-your-coding-job/">"AI is coming for your coding job"</a>. <i>Sifted</i>. 13 March 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">2019-04-15</span></span>.</cite></span>
</li>
<li id="cite_note-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-46">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.techtimes.com/articles/265325/20210913/ishraq-khan-revolutionizing-the-programming-scene-in-2021.htm">"Ishraq Khan, Revolutionizing the Programming Scene in 2021"</a>. <i>TechTimes</i>. 13 September 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">2022-10-15</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="url"><a rel="nofollow" class="external text" href="https://program-repair.org/">program-repair<wbr>.org</a></span> datasets, tools, etc., related to automated program repair research.</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-03" href="https://en.wikipedia.org/wiki/?title=Automatic_bug_fixing&oldid=1304070708">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>